
using PolicyAlgebra.Type;

namespace PolicyAlgebra.Parser
{
	///<summary>
	/// This interface defines the methods that a parser that is related
	/// to the algebra should conform to. Note that the files to parse need
	/// not be plain text, they could very well well be binary.
	///</summary>
	public interface IParser
	{
		///<summary>
		/// This method takes a filename and parses the contents and
		/// returns the resulting policy object.
		///</summary>
		///<param name="filename">The name of the file to parse and import </param>
		///<remarks>
		/// The precise return type may change in the future.
		///</remarks>
		public Policy ImportFile(string filename);


		///<summary>
		/// This method takes a policy object and returns a string representation
		/// of it.
		///</summary>
		///<param name="policy">The policy to export</param>
		///<remarks>
		/// The parameter type may change.
		///</remarks>
		public string ExportPolicy(Policy policy);

	}
}
